﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Noftware.Com.Cryptography
{
    /// <summary>
    /// Type of key.
    /// </summary>
    public enum KeyType
    {
        /// <summary>
        /// Alpha and numeric characters.
        /// </summary>
        AlphaNumeric,

        /// <summary>
        /// Numeric-only digits.
        /// </summary>
        Numeric,

        /// <summary>
        /// Alpha-only characters.
        /// </summary>
        Alpha,

        /// <summary>
        /// GUID's.
        /// </summary>
        Guid
    }

    /// <summary>
    /// Casing of keys that have alpha characters.
    /// </summary>
    public enum KeyCase
    {
        /// <summary>
        /// Mixed case.
        /// </summary>
        Mixed,

        /// <summary>
        /// Lower case.
        /// </summary>
        Lower,

        /// <summary>
        /// Upper case.
        /// </summary>
        Upper
    }

    /// <summary>
    /// Determines the mode.
    /// </summary>
    public enum Mode
    {
        /// <summary>
        /// Mode is encryption.
        /// </summary>
        Encryption,

        /// <summary>
        /// Mode is decryption.
        /// </summary>
        Decryption
    }

    /// <summary>
    /// Cryptography types.
    /// </summary>
    public enum CryptographyType
    {
        /// <summary>
        /// MD5.
        /// </summary>
        Md5,

        /// <summary>
        /// Rijndael.
        /// </summary>
        Rijndael,

        /// <summary>
        /// XOR.
        /// </summary>
        Xor,

        /// <summary>
        /// Hex.
        /// </summary>
        Hex
    }

    /// <summary>
    /// Required salts?
    /// </summary>
    public enum SaltRequirement
    {
        /// <summary>
        /// Salt is required.
        /// </summary>
        Required,

        /// <summary>
        /// Salt is not permitted.
        /// </summary>
        NotPermitted,

        /// <summary>
        /// Required but integer only.
        /// </summary>
        RequiredIntegerOnly
    }
}
